#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
int main()
{
    pid_t id=fork();
    if(id==0)
    {
        int n=5;
        while(n)
        {
            printf("n= %d, 我是子进程: pid: %d, ppid: %d\n",
                    n,getpid(),getppid());
            sleep(1);
            n--;
        }
        exit(11);//use for test
    }
    else
    {
        int quit=0;
        while(!quit){
            int status=0;
            pid_t res=waitpid(-1,&status,WNOHANG);
            if(res>0){
                printf("等待子进程退出成功：退出码：%d\n",WEXITSTATUS(status));
                quit=1;
            }
            else if(res==0){
                printf("子进程还在运行中，暂时还没有退出，父进程可以再等一等，处理一下其他事情\n");
            }
            else{
                printf("wait失败\n");
                quit=1;
            }
            sleep(1);
        }
       // int status=0;
       // pid_t result=waitpid(id,&status,0);
       // if(result>0)
       // {
       //    if(WIFEXITED(status))
       //    {
       //        printf("子进程执行完毕,子进程的退出码：%d\n",WEXITSTATUS(status));
       //    }
       //    else{
       //        printf("子进程异常退出：%d\n",WIFEXITED(status));
       //    }
       // }
    }

    return 0;
}
